The present invention relates generally to manufacture of portable electronic devices, and more particularly to provisioning of multiple application code libraries in a compressed form for subsequent decompression for use by applications activated on the portable electronic devices, for example, integrated circuit cards primarily using non-volatile memory for program storage.
The present technology is described herein as related to smart cards (also known as integrated circuit cards, UICC, SIM, chip cards), which are small card-like electronic devices with embedded integrated circuits and memory. Smart cards have evolved significantly over time. One recent development is the increased use of flash memory, in lieu of Read-Only Memory (ROM), for program and data storage. Herein, the term non-volatile memory is used to describe memory systems that retain their stored content through power cycles and which may be reprogrammed Examples, include Electrically Erasable Programmable ROM (EEPROM) and flash memory.
The life of a smart card, from initial manufacture to ultimate disposal, is often described as the smart card life cycle. While there is no fixed life cycle model that applies to all cards and all deployments, there are certain common aspects. In a first phase, manufacturing, the smart cards are manufactured in bulk. This includes production of a card body, production of chips and contacts, and assembly of these into one structure. The production phase may also include pre-loading of operating systems, application code libraries, and certain static applications common to all cards of a family. Thus, the manufacturing phase involves several sub-steps; these include manufacturing of chip modules, printing of card bodies, and assembly of cards by embedding the chip modules into the card bodies. The chip module manufacturer and the card manufacturer may be separate entities.
Smart cards are in a sense the most personal of computers. A smart card may, for example, have embossed a user's name and likeness thereon and may contain personal information relating only to the user, e.g., the user's account information. Thus, a second phase in the life cycle is the personalization, also known as individualization, stage. During personalization, specific applications used by an individual user may be loaded onto the smart card. Such applications may require particular application code libraries to have been pre-loaded onto the smart card.
After personalization, the card may be issued to an end-user.
Let's consider an example including an issuing bank. The bank (issuer) would purchase a large number of cards from a card manufacturer. The issuer may use these cards with many applications; for example, in the banking context there may be applications for payment service companies such as VISA, Master Card, Eurocard, JCB Card, etc., specific financial institutions such as American Express, or payment applications provided by card manufactures such as the PURE payment application from Gemalto, N.V., Amsterdam, The Netherlands. Each of these applications requires a particular application code library, e.g., VISA application code library, Amex application code library, and so on. A card family is a card that contains a particular combination of code libraries.
Typically a given card is not used for all different applications, e.g., a VISA application may not co-exist on a card with a JCB Card application. Therefore, in the interest of cost savings achieved by having smaller NVM, it is not necessary to provide memory space to include all application code libraries. However, a drawback to that is that an issuer, e.g., the bank issuing cards to its customers, must order and maintain multiple card families, e.g., one card family for each of its applications. Managing multiple card families is expensive and cumbersome for the issuer; for example, if the issuer orders too many cards of one family, those cards may not be used with an incompatible application.
From the foregoing it will be apparent that there is still a need for an improved method to provide smart cards that provide for multiple application code libraries without requiring excessively large non-volatile memories that include code libraries not used after personalization of the cards.